/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jcp.modelo.dao.conexion;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 *
 * @author jt-jk
 */
public class Conexion implements Serializable {

    private transient Connection con;
    private String jdbcDriver;
    private String jdbcUser;
    private String jdbcPassword;
    private String jdbcDataBaseURL;
    private static Conexion conexion;

    private Conexion() throws SQLException {
       
        try {

            jdbcDataBaseURL = "jdbc:mysql://localhost/nueva_db_jcp";
            jdbcDriver = "com.mysql.jdbc.Driver";
            jdbcUser = "root";
            jdbcPassword = "";

        } catch (Exception ex) {
            ex.printStackTrace();
            throw new SQLException("Error, imposible conectarse a la base de datos, por favor verifique los parámetros de conexión....!");
        }
    }

    private void conectar() throws SQLException {
        if (con == null || con.isClosed()) {
            if (jdbcDriver == null) {
                throw new SQLException("Error, no hay Driver de Conexión...!");
            }
            if (jdbcDataBaseURL == null) {
                throw new SQLException("Error, no ha especificado la URL del Servidor de BD...!");
            }


            try {
                Class.forName(jdbcDriver);
            } catch (ClassNotFoundException ex) {
                ex.printStackTrace();
                throw new SQLException("Error, no fue posible cargar el Driver de conexión...!");
            }

            con = DriverManager.getConnection(jdbcDataBaseURL, jdbcUser, jdbcPassword);
            System.out.println("Conectado...");
        }
    }

    public static Conexion getInstance() throws SQLException {
        if (conexion == null) {
            conexion = new Conexion();
        }

        conexion.conectar();
        return conexion;
    }

    public boolean isConnect() throws SQLException {
        return con != null && !con.isClosed();
    }

    public Connection getCon() {
        return con;
    }
}
